package Experimentos;

import comun.Fichero;
import esc1Caso1.*;
import comun.GeneradorProblemas;

import aima.search.framework.Problem;
import aima.search.framework.Search;
import aima.search.framework.SearchAgent;
import aima.search.informed.HillClimbingSearch;
import IA.DistFS.Servers.WrongParametersException;

public class Main4a {

    public static void main(String [] args){
    	long tiempoIni = 0;
    	long tiempoFinal = 0;
    	int numPruebas = 7;
    	int paraMedia = 10;
    	double media= 0;
    	System.out.println("tiempos de ejecucion con mejor tiempo");
    	System.out.println("usuarios: 100+(i*100)  peticiones: 5 servidores: 5 replicaciones: 3" );
        GeneradorProblemas generador = new GeneradorProblemas();
        try {
        	for(int i = 0; i < numPruebas; i++){
        		tiempoIni = System.currentTimeMillis();
        		generador.cambioParametros(100+(i*100), 5,5,3);
        		for(int j = 0; j < paraMedia; ++j){
                Estado caso1b = new Estado(generador.getPeticiones(), generador.getServidores(), generador.getNumServidores());
                caso1b.generarEstadoInicialMenorTiempo();
                
                //Crea y resuelve el problema
                Problem problemab = new Problem(caso1b, new FuncionSuccesores(false), new EsEstadoFinal() , new Heuristico());
                Search algoritmob = new HillClimbingSearch();
                SearchAgent agentb = new SearchAgent(problemab, algoritmob);
                
                Estado resultadob = (Estado) algoritmob.getGoalState();
                tiempoFinal = System.currentTimeMillis();
                media += (tiempoFinal-tiempoIni);
        		}
                
                System.out.println((media/paraMedia));
                media=0;
        	}
            System.out.println("FIN");
        } catch (WrongParametersException e) {
                e.printStackTrace();
        } catch (Exception e) {
			e.printStackTrace();
		}
            
            
    }
}
